package com.compasudea.polla.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Clase que permite conectarse con la base de datos.
 * @author Ivan Londono.
 */
public class ConexionBD {	
	
	//Variable para el manejo de la conexion en sesion.
	FacesContext context;
	HttpSession session;
	
	/** Conexion con la base de datos.*/
	private Connection conexion;
	
	/**Constructor.*/
	public ConexionBD() {}		
	
	/**
	 * Permite obtener el valor de la variable conexion.
	 * @return conexion activa
	 */
	public Connection getConexion() {
		
		context = FacesContext.getCurrentInstance();
		session = ((HttpServletRequest) context.getExternalContext().getRequest()).getSession();
		
		conexion = (Connection) session.getAttribute(ConstantesGenerales.CONEXION);
		
		if (conexion == null) {
			conexion = this.conectar();
		}
		
		return conexion;
	}

	/**
	 * Permite asignar valor a la variable conexion.
	 * @param conexion valor a asignar a la variable.
	 */
	public void setConexion(Connection conexion) {
		this.conexion = conexion;
	}

	/**
	 * Metodo que permite conectarse a una base de datos especifica.
	 * @return true si la conexion se pudo establecer, false en otro caso.
	 */
	private Connection conectar() {
		
		Connection con;
		/*
		context = FacesContext.getCurrentInstance();
		session = ((HttpServletRequest) context.getExternalContext().getRequest()).getSession();
		
		con = (Connection) session.getAttribute(ConstantesGenerales.CONEXION);
		
		if (con == null) {*/
					
			try {			
				DriverManager.registerDriver(new com.mysql.jdbc.Driver());
				con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","gabriel*2009");
				
				session.setAttribute(ConstantesGenerales.CONEXION, con);
				
			} catch (SQLException e) {
				e.printStackTrace();
				return null;
			}
		//}
		
		return con;		
	}
	
	
	
	//---------------------------------------------------------------------------------
	

	/*
	public void conectar(String user, String password) {
		try {			
			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
			con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE",user, password);
			System.out.println("Conexion exitosa");
		} catch (SQLException e) {
			System.out.println("Fallo la conexion");
			e.printStackTrace();
		}
	}
	*/
	
	public void desconectar(Connection conexion) {
		
		try {

			if (conexion != null)	 {
				conexion.close();	
				session.setAttribute(ConstantesGenerales.CONEXION, conexion);
			}
			
		} catch (SQLException e) {
			System.out.println("Error al desconectar");
			e.printStackTrace();
		}
	}	
}